package com.zzz.first;

import java.util.Scanner;

/*
 * @author zzr
 * @date: 2025/07/07  10:34
 * @description:牛牛拿到了一个字符串。他每次“点击”，可以把字符串中相邻两个相同字母消除，
 * 例如，字符串"abbc"点击后可以生成"ac"。
 * 但相同而不相邻、不相同的相邻字母都是不可以被消除的。
 * 牛牛想把字符串变得尽可能短。他想知道，当他点击了足够多次之后，字符串的最终形态是什么?
 */
public class Demo3 {
    public static void main(String[] args) {
        /**
         * 栈模拟消除：遍历字符串中的每个字符，使用一个动态字符串（StringBuilder）模拟栈
         *      若当前字符，与栈顶字符相同，则弹出栈顶
         *      若不同，将当前字符压入栈
         */
        Scanner in = new Scanner(System.in);
        String s = in.next();
        StringBuilder stack = new StringBuilder();
        for (char c : s.toCharArray()) {
            // 若栈非空并且栈顶字符与当前字符相同，消除栈顶
            if (stack.length() > 0 && c == stack.charAt(stack.length() - 1)) {
                stack.deleteCharAt(stack.length() - 1);
            } else {
                stack.append(c);
            }
        }
        // 输出结果
        String result = stack.toString();
        System.out.println(result.isEmpty() ? "0" : result);
    }
}
